package com.example.mpandroidchart_all.FragmentChart;

import android.graphics.Color;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;

import androidx.annotation.NonNull;
import androidx.annotation.Nullable;
import androidx.fragment.app.Fragment;

import com.example.mpandroidchart_all.R;
import com.github.mikephil.charting.charts.LineChart;
import com.github.mikephil.charting.components.Legend;
import com.github.mikephil.charting.components.XAxis;
import com.github.mikephil.charting.components.YAxis;
import com.github.mikephil.charting.data.Entry;
import com.github.mikephil.charting.data.LineData;
import com.github.mikephil.charting.data.LineDataSet;
import com.github.mikephil.charting.interfaces.datasets.ILineDataSet;

import java.util.ArrayList;

public class FragmentCurveLineChart extends Fragment {
    private LineChart mLineChart;
    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        View view=inflater.inflate(R.layout.fragment_curveline,container,false);
        mLineChart=view.findViewById(R.id.curve_line_chart);


        setxAxis();
        initData();

        return view;
    }
    private void initData() {
        mLineChart.setExtraOffsets(0,30f,0,30f);
        setChartData();
    }
    private void setChartData(){
        ArrayList<Entry> values1=new ArrayList<>();
        ArrayList<Entry> values2=new ArrayList<>();

        values1.add(new Entry(0,30));
        values1.add(new Entry(2,60));
        values1.add(new Entry(4,50));
        values1.add(new Entry(6,80));
        values1.add(new Entry(8,60));

        values2.add(new Entry(0,60));
        values2.add(new Entry(2,90));
        values2.add(new Entry(4,60));
        values2.add(new Entry(6,90));
        values2.add(new Entry(8,80));

        //LineDataSet每一个对象就是一条连接线
        LineDataSet set1;
        LineDataSet set2;


        //设置数据1   参数1：数据源   参数2：图例名称
        set1=new LineDataSet(values1,"测试数据1");
        set1.setColor(Color.BLACK);
        set1.setCircleColor(Color.BLACK);
        set1.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        set1.setLineWidth(1f);//设置线宽
        set1.setHighlightEnabled(true);//是否禁用点击高亮线
        set1.setForm(Legend.LegendForm.CIRCLE);
        set1.setValueTextSize(9f);//设置显示值的文字大小
        set1.setDrawFilled(true);//设置禁用范围背景填充


        //设置数据2
        set2=new LineDataSet(values2,"测试数据2");
        set2.setColor(Color.BLACK);
        set2.setCircleColor(Color.BLACK);
        set2.setMode(LineDataSet.Mode.CUBIC_BEZIER);
        set2.setLineWidth(1f);//设置线宽
        set2.setHighlightEnabled(true);//是否禁用点击高亮线
        set2.setForm(Legend.LegendForm.CIRCLE);
        set2.setValueTextSize(9f);//设置显示值的文字大小
        set2.setDrawFilled(false);//设置禁用范围背景填充
        set2.setCircleRadius(3f);

        //保存LineDataSet集合
        ArrayList<ILineDataSet> dataSets=new ArrayList<>();
        dataSets.add(set1);dataSets.add(set2);

        //创建LineData对象  属于LineChart折线图的数据集合
        LineData data=new LineData(dataSets);

        //添加到图表中
        mLineChart.setData(data);

        //绘制图表
        mLineChart.invalidate();
    }
    private void setxAxis(){
        XAxis xAxis=mLineChart.getXAxis();
        xAxis.setEnabled(true);//设置轴启用或禁用，如果禁用以下的设置全部不生效
        xAxis.setDrawAxisLine(true);//是否绘制轴线
        xAxis.setDrawGridLines(true);//设置x轴上每一个点对应的线
        xAxis.setDrawLabels(true);//绘制标签  指x轴上的对应数值
        xAxis.setPosition(XAxis.XAxisPosition.BOTTOM);//设置x轴的显示位置
        xAxis.setTextColor(Color.RED);//设置字体颜色
        xAxis.setTextSize(20f);//设置字体
        xAxis.setAxisMinimum(0f);
        xAxis.setAxisMaximum(10f);
        xAxis.setGridLineWidth(2f);

        YAxis axisRight = mLineChart.getAxisRight();
        axisRight.setEnabled(false);
    }
}
